<?php
/**
 * Permite agregar, modificar o eliminar exonerados del pago del servicio de
 * estacionemiento del SIMERT
 * @package simertweb 
 * @subpackage controllers  
 * @category Administración
 * @author Grecia Espinoza <mrcl2587@gmail.com>
 * @author Juan Maldonado  <jgmaldonadoj@gmail.com> 
 * @version 1.0 
 */
class Registrar_exonerados extends CI_Controller {

    function __construct() {
        parent::__construct();

        $this->load->model('mpersona');
        $this->load->model('mexonerado');
        $this->load->model('mempleado');
        $this->load->model('mrol');
        $this->load->model('acceso');
    }

    /**
     * Muestra la interfaz para crear un nuevo exonerado
     * @param type $data2
     */
    function index($data2 = "") {
        if ($this->acceso->sesion() == 1) {
            $datax['var'] = $data2;
            $data['listaexonerados'] = $this->mexonerado->listar_exonerados();
            $this->load->view('includes/menu_izquierdo');
            $this->load->view('includes/cabecera', $datax);
            $this->load->view('registrar_exonerados', $data);
            $this->load->view('includes/footer');
        } else {
            $this->load->view('autenticacion');
        }
    }


    /**
     * Permite crear un nuevo exonerado
     */
    function guardar() {
//        $this->form_validation->set_rules('codigo', 'Codigo', 'required');
        $this->form_validation->set_rules('nombres', 'Nombres', 'required|callback_alpha_space|min_length[3]|max_length[30]|trim');
        $this->form_validation->set_rules('apellidos', 'Apellidos', 'required|callback_alpha_space|min_length[3]|max_length[30]|trim');
        $this->form_validation->set_rules('cedula', 'Cédula', 'callback_cedula_check|callback_validar_cedula|required|numeric|exact_length[10]|trim');
        $this->form_validation->set_rules('codigocarnet', 'Codigo Carnet', 'required|callback_carnet_check|trim');
        $this->form_validation->set_rules('placas', 'Placa', 'required|trim|alpha_numeric|min_length[6]|max_length[8]');
        if ($this->form_validation->run() === TRUE) {
            $this->mexonerado->guardar_exonerado();
            $data['message'] = '/simertweb/registrar_exonerados';
            $this->load->view('includes/menu_izquierdo');
            $this->load->view('includes/cabecera');
            $this->load->view('includes/mensaje_exito', $data);
            $this->load->view('includes/footer');
        } else {
            $data2 = FALSE;
            $this->index($data2);
        }
    }

    /**
     * Permite inhabilitar un exonerado
     */
    function eliminar() {
        if ($this->acceso->sesion() == 1) {
            $this->mexonerado->eliminar_exonerado();
            $data2 = FALSE;
            $this->index($data2);
        } else {
            $data2 = FALSE;
            $this->index($data2);
        }
    }

    /**
     * Muestra los datos de un exonerado
     */
    function cargar_exonerado() {
        if ($this->acceso->sesion() == 1) {
            $this->form_validation->set_rules('modificar', ' ', 'required');
            if ($this->form_validation->run() === TRUE) {
                $datax['var'] = TRUE;
                $data['exoneradomodificar'] = $this->mexonerado->obtener_exonerado();
                $this->load->view('includes/menu_izquierdo');
                $this->load->view('includes/cabecera', $datax);
                $this->load->view('registrar_exonerados', $data);
                $this->load->view('includes/footer');
            } else {
                $data2 = FALSE;
                $this->index($data2);
            }
        } else {
            $data2 = FALSE;
            $this->index($data2);
        }
    }

    /**
     * Permite modificar los datos de un exonerado
     */
    function actualizar() {
        $this->form_validation->set_rules('codigo', 'Codigo', 'required');
        $this->form_validation->set_rules('cedula', 'Cédula', 'callback_modificarcedula_check|callback_validar_cedula|required|integer|exact_length[10]|trim');
        $this->form_validation->set_rules('nombres', 'Nombres', 'required|callback_alpha_space|min_length[3]|max_length[30]|trim');
        $this->form_validation->set_rules('apellidos', 'Apellidos', 'required|callback_alpha_space|min_length[3]|max_length[30]|trim');
        $this->form_validation->set_rules('codigocarnet', 'Codigo Carnet', 'required|callback_modificarcarnet_check|trim');
        $this->form_validation->set_rules('placas', 'Placa', 'required|trim|alpha_numeric|min_length[6]|max_length[8]');
        if ($this->form_validation->run() == TRUE) {
            $this->mexonerado->actualizar_exonerado($_POST['codigo'], $_POST['codigocarnet'], $_POST['placas']);
            $data['message'] = '/simertweb/registrar_exonerados';
            $this->load->view('includes/menu_izquierdo');
            $this->load->view('includes/cabecera');
            $this->load->view('includes/mensaje_exito', $data);
            $this->load->view('includes/footer');
        } else {
            $data2 = TRUE;
            $this->index($data2);
        }
    }
    
    
    /**
     * Para agregar un exonerado valida que el número de cédula de identidad sea único
     * @return boolean
     */
    function cedula_check() {
        if ($this->mpersona->validar_persona() == TRUE) {
            return TRUE;
        } else {
            $this->form_validation->set_message('cedula_check', '<p style="color: red">La C.I. ingresada ya existe</p>');
            return FALSE;
        }
    }

    /**
     * Para agregar un exonerado valida que el número de cédula de identidad sea correcto
     * @return boolean
     */
    function validar_cedula() {
        $mensaje = $this->mpersona->validarCI($_POST['cedula']);
        if (is_bool($mensaje)) {
            return TRUE;
        } else {
            $this->form_validation->set_message('validar_cedula', '<p style="color: red">La C.I. incorrecta</p>');
            return FALSE;
        }
    }

    /**
     * Válida que la cadena contenga caracteres alfabéticos, espacios y tildes
     * @param type $str_in es el parámetro que se ingresa en el formulario
     * @return boolean
     */
    function alpha_space($str_in = '') {
        if (!preg_match("/^([-a-záéíóúÁÉÍÓÚñÑ ])+$/i", $str_in)) {
            $this->form_validation->set_message('alpha_space', '<p style="color: red">El campo %s acepta solo carateres alfabéticos.</p>');
            return FALSE;
        } else {
            return TRUE;
        }
    }

    /**
     * Valida la placa del vehículo
     * @param type $str_in es el parámetro que se inngresa en el formulario
     * @return boolean
     */
    function validar_placa($str_in = '') {
        if (!preg_match("/^([-a-z1234567890])+$/i", $str_in)) {
            $this->form_validation->set_message('validar_placa', '<p style="color: red">El campo %s acepta solo carateres alfanuméricos</p>');
            return FALSE;
        } else {
            return TRUE;
        }
    }

    /**
     * Para modificar valida que el número de cédula de identidad sea único
     * @return boolean
     */
    function modificarcedula_check() {
        if ($this->mpersona->validar_persona_modificar($this->mpersona->obtener_idPersona_exonerado($_POST["codigo"])) == TRUE) {
            return TRUE;
        } else {
            $this->form_validation->set_message('modificarcedula_check', '<p style="color: red">La C.I. ingresada ya existe</p>');
            return FALSE;
        }
    }

    /**
     * Para modificar valida que el código de carnet sea único
     * @return boolean
     */
    function modificarcarnet_check() {
        if ($this->mexonerado->validar_carnet_modificar($_POST["codigo"], $_POST["codigocarnet"]) == TRUE) {

            return TRUE;
        } else {
            $this->form_validation->set_message('modificarcarnet_check', '<p style="color: red">El numero de carnet ya existe</p>');
            return FALSE;
        }
    }

    /**
     * Para agregar un exonerado valida que el código de carnet sea único
     * @return boolean
     */
    function carnet_check() {
        if ($this->mexonerado->validar_carnet($_POST["codigocarnet"]) == TRUE) {
            return TRUE;
        } else {
            $this->form_validation->set_message('carnet_check', '<p style="color: red">El número de carnet ya existe</p>');
            return FALSE;
        }
    }

}

?>
